﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SStuff.MetaEffects.Model
{
    public class float4
    {
        public const float4 Default = null;
        public float x { get; set; }
        public float y { get; set; }
        public float z { get; set; }
        public float w { get; set; }

        public float2 xy { get; set; }
        public float2 yz { get; set; }
        public float2 xz { get; set; }
        public float2 zw { get; set; }
        public float2 xw { get; set; }
        public float2 yw { get; set; }

        public float3 xyz { get; set; }

        public float4(float value)
        {
        }
        public float4(float x, float y, float z, float w)
        {
        }
        public float4(float2 xy, float2 zw)
        {
        }
        public float4(float3 xyz, float w)
        {
        }
        public float4(float x, float3 yzw)
        {
        }

        public void Return() { }


        public static float4 operator +(float4 left, float4 right)
        {
            return null;
        }
        public static float4 operator -(float4 left, float4 right)
        {
            return null;
        }

        public static float4 operator *(float4 left, float right)
        {
            return null;
        }

        public static float4 operator *(float left, float4 right)
        {
            return null;
        }

        public static float4 operator *(float4 left, float4 right)
        {
            return null;
        }

        public static float4 operator /(float4 left, float right)
        {
            return null;
        }

        public static float4 operator /(float left, float4 right)
        {
            return null;
        }

        public static float4 operator /(float4 left, float4 right)
        {
            return null;
        }

        [HlslFunction("mul({this}, {matrix})")]
        public float4 mul(float4x4 matrix)
        {
            return null;
        }

        public float3 xxx { get; set; }
    }
}
